package com.wpp.mq.rabbitmqsqmple.democase;

import com.rabbitmq.client.BuiltinExchangeType;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.net.URISyntaxException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;

/**
 * @description: 生产者
 * @author: WangPengPeng
 * @create: 2021-11-28 15:05
 **/
public class HelloWorldSender {


    public static void main(String[] args) throws URISyntaxException, NoSuchAlgorithmException, KeyManagementException {
        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("192.168.86.128");
        // 设置 虚拟主机名称  / 在url 中的转义符 %2f
        factory.setVirtualHost("/");
        factory.setUsername("root");
        factory.setPassword("root");
        factory.setPort(5672);

        try {
            Connection conn = factory.newConnection();
            Channel channel = conn.createChannel();

            /**
             *  声明消息队列
             *  消息队列名称
             *  是否持久化
             *  是否排他
             *  是否自动删除
             *  消息队列的属性信息
             */
            channel.queueDeclare("queue.biz",false,false,true,null);

            /**
             *  声明 交换器
             *  交换器名称
             *  交换器 类型
             *  交换器 是否持久化
             *  交换器 是否自动删除
             *  交换器 的属性信息
             */
            channel.exchangeDeclare("ex.biz", BuiltinExchangeType.DIRECT,false,true,null);
            // 将交换器和 消息队列绑定，并指定路由建
            channel.queueBind("queue.biz","ex.biz","hello.world");

            String message = "hello world 1";
            /**
             *  发送消息
             *  交换器的名字
             *  消息的路由键
             *  该消息的属性 BasicProperties 对象
             *  消息的字节数组
             */
            channel.basicPublish("ex.biz","hello.world",null,message.getBytes());
            System.out.println(" [x] Sent '" + message +"'");

            channel.close();
            conn.close();
        } catch (Exception e) {

        }
    }
}
